package com.ruoyi.cs.service;

import com.ruoyi.common.core.domain.Response;
import com.ruoyi.cs.domain.TBattleInfo;
import com.ruoyi.cs.domain.TBox;
import com.ruoyi.cs.domain.dto.battle.BattleBaseResp;
import com.ruoyi.cs.domain.dto.battle.BattleInfoResp;
import com.ruoyi.cs.domain.dto.battle.BattleStartReq;
import com.ruoyi.cs.domain.vo.*;

import java.util.List;
import java.util.Map;

/**
 * 盲盒对战信息Service接口
 * 
 * @author ruoyi
 * @date 2021-08-05
 */
public interface ITBattleInfoService 
{
    /**
     * 查询盲盒对战信息
     * 
     * @param battleId 盲盒对战信息ID
     * @return 盲盒对战信息
     */
    public TBattleInfo selectTBattleInfoById(String battleId);

    /**
     * 查询盲盒对战信息列表
     * 
     * @param tBattleInfo 盲盒对战信息
     * @return 盲盒对战信息集合
     */
    public List<TBattleInfo> selectTBattleInfoList(TBattleInfo tBattleInfo);

    /**
     * 新增盲盒对战信息
     * 
     * @param tBattleInfo 盲盒对战信息
     * @return 结果
     */
    public int insertTBattleInfo(TBattleInfo tBattleInfo);

    /**
     * 修改盲盒对战信息
     * 
     * @param tBattleInfo 盲盒对战信息
     * @return 结果
     */
    public int updateTBattleInfo(TBattleInfo tBattleInfo);

    /**
     * 批量删除盲盒对战信息
     * 
     * @param battleIds 需要删除的盲盒对战信息ID
     * @return 结果
     */
    public int deleteTBattleInfoByIds(String[] battleIds);

    /**
     * 删除盲盒对战信息信息
     * 
     * @param battleId 盲盒对战信息ID
     * @return 结果
     */
    public int deleteTBattleInfoById(String battleId);

    /**
     * 盲盒列表
     * @return
     */
    public List<TBox> battleBoxList(PageInfoParamVo pageInfoParamVo);

    /**
     * 创建对战房间
     * @param
     * @return
     * @throws Exception
     */
    public Response<Map> createBattle(String userId, TbattleCreateVo tbattleCreateVo);


    /**
     * 查询盲盒对战信息列表
     * @param list
     * @return
     */
    public List<TBattleBackVo> selectTBattleInfoList( List<TBattleInfo> list);

    /**
     * 后面盲盒对战列表
     * @param tBattleBackVo
     * @return
     */
    public List<TBattleInfo> battleBackList(TBattleBackVo tBattleBackVo);

    /**
     * 盲盒对战统计
     * @return
     */
    public Response<Map> count(String startTime, String endTime);

    /**
     * 盲盒对战箱子统计列表
     * @param tBattleBoxCountVo
     * @return
     */
    public List<Map> boxCountList(TBattleBoxCountVo tBattleBoxCountVo);

    /**
     * 过期处理
     */
    public void obsoleteBattle(TBattleInfo tBattleInfo) throws Exception;

    /**
     * @Desc: 修改对战状态，并处理粉丝对战
     * @author: zz
     * @date: 2023/12/10
     */
    public void battleOver();


    /**
     * @Desc: 对战列表
     * @author: zz
     * @date: 2024/2/23
     */
    List<BattleBaseResp> battleListV2(String battleListType,String userId);

    /**
     * @Desc: 参与对战
     * @author: zz
     * @date: 2024/2/24
     */
    Response<Map> startBattleV2(BattleStartReq req, String userId);


    /**
     * @Desc: 对战详情
     * @author: zz
     * @date: 2024/2/25
     */
    Response<BattleInfoResp> battleInfoV2(String battleId,String userId);
}
